﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Ahi.Entity;
using Ahi.Controller;
using Ahi.Config;
using MongoDB.Bson;
using Ahi.Entity.Interfaces;
using Ahi.Raporlama;

namespace Ahi.KomisyonEtkinlik
{
    public partial class EtkinlikListesiForm : Base.BaseForm
    {
        List<EtkinlikEntity> coll;

        public EtkinlikEntity CurrentEtkinlik
        {
            get
            {
                if (bsEtkinlik.Current is EtkinlikEntity)
                    return bsEtkinlik.Current as EtkinlikEntity;
                return null;
            }
        }

        public EtkinlikListesiForm()
        {
            InitializeComponent();
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            Listele();
        }

        private void buttonListele_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Listele();
        }

        private void buttonEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Duzenle(true);
        }

        private void buttonDuzenle_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Duzenle();
        }

        private void buttonKaydet_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Kaydet();
        }

        private void buttonExceleAktar_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            ExceleAktar();
        }

        private void buttonYazdir_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Yazdir();

        }

        private void buttonKapat_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Close();
        }

        public override void Hazirla()
        {
            repositoryItemLookUpDurum.SetEnumList<Entity.Enums.EtkinlikDurumu>();
            //repositoryItemLookUpFaaliyetTipi.SetEnumList<Entity.Enums.EtkinlikTipleri>();
            repositoryItemLookUpKomisyon.SetDataSource("KomisyonAdi", "Id", MongoAdaptor.Instance.GetData<KomisyonEntity>());
        }

        public override void Yukle()
        {
            Listele();
        }

        private void Listele()
        {
            coll = MongoAdaptor.Instance.GetData<EtkinlikEntity>();
            bsEtkinlik.DataSource = coll;
        }

        public override void Kaydet()
        {
            MongoAdaptor.Instance.Save<EtkinlikEntity>(coll);
        }

        private void ExceleAktar()
        {
            SaveFileDialog dlg = new SaveFileDialog();
            dlg.Filter = "Excel Dosyaları (*.xls)|*.xls";
            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                gridControlEtkinlikler.ExportToXls(dlg.FileName, true);
            }
        }

        private void Yazdir()
        {
            RaporEntity rapor = null;
            if (RaporSecimForm.ShowRaporSecim(ref rapor, AppConfig.Current.EtkinliklerRaporu) == System.Windows.Forms.DialogResult.OK)
            {
                if (rapor.Id == ObjectId.Empty)
                    gridControlEtkinlikler.ShowPrintPreview();
                else
                {
                    AppConfig.Current.EtkinliklerRaporu = rapor.Id;
                    AppConfig.Current.SaveToDatabase();

                    Raporlama.RaporGoruntuleyiciForm frm = new Raporlama.RaporGoruntuleyiciForm();
                    frm.Id = AppConfig.Current.EtkinliklerRaporu;
                    if (rapor.KayitGosterimSekli == Entity.Enums.KayitGosterimSekli.Tekil)
                        frm.DataSource = CurrentEtkinlik;
                    else
                        frm.DataSource = bsEtkinlik.DataSource;
                    frm.Show();
                }
            }
        }

        private void Duzenle(bool yeni = false)
        {
            EtkinlikEditForm frm = new EtkinlikEditForm();
            if (!yeni)
            {
                if (CurrentEtkinlik == null) return;
                frm.Id = CurrentEtkinlik.Id;
            }
            frm.ShowDialog();
            Listele();
        }

        private void gridViewEtkinlikler_DoubleClick(object sender, EventArgs e)
        {
            Duzenle();
        }
    }
}
